﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using App.Modelo.Interfaces;
using App.SolInf.Modelo;

namespace App.SolInf.Vista.Comandos
{
    public abstract class SolInfComando : IComando
    {
        public string Formulario { get; set; }
        public string Accion { get; set; }

        public void Ejecutar()
        {
            EjecutarInner();
        }

        protected abstract void EjecutarInner();
    }


    public class ComandoAltaVenta : SolInfComando
    {
        protected override void EjecutarInner()
        {
            var form = new Listado.ListadoVentas();
            form.AprobarVenta();
        }
    }
    #region Presupuestos

    public class ComandoAltaPresupuesto : SolInfComando
    {
        protected override void EjecutarInner()
        {
            var form = new DetallePresupuesto();
            form.Alta();
        }
    }

    public class ComandoModificarPresupuesto : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoPresupuestos().Modificar();
        }
    }


    public class ComandoBajaPresupuesto : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoPresupuestos().Baja();
        }
    }

    public class ComandoVerPresupuesto : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoPresupuestos().ver();
        }
    }


    #endregion

    #region Compras
    public class ComandoAltaCompra : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new DetalleCompra().Alta();
        }
    }

    public class ComandoModificarCompra : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoCompras().Modificar();
        }
    }


    public class ComandoBajaCompra : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoCompras().Baja();
        }
    }

    public class ComandoVerCompra : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoCompras().ver();
        }
    }

    #endregion

    #region Clientes
    public class ComandoAltaCliente : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new DetalleClienteForm().Alta();
        }
    }

    public class ComandoModificarCliente : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoCliente().Modificar();
        }
    }


    public class ComandoBajaCliente : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoCliente().Baja();
        }
    }

    public class ComandoVerCliente : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoCliente().Ver();
        }
    }

    #endregion

    #region Proveedores
    public class ComandoAltaProveedor : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new DetalleProveedorForm().Alta();
        }
    }

    public class ComandoModificarProveedor : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoProveedor().Modificar();
        }
    }


    public class ComandoBajaProveedor : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoProveedor().Baja();
        }
    }

    public class ComandoVerProveedor : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoProveedor().ver();
        }
    }

    #endregion

    #region Productos
    public class ComandoAltaProducto : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new DetalleProducto().AltaProducto();
        }
    }

    public class ComandoModificarProducto : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoProducto().Modificar();
        }
    }


    public class ComandoBajaProducto : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoProducto().Baja();
        }
    }

    /** 
     * Concrete Command
     */
    public class ComandoVerProducto : SolInfComando
    {
        private Listado.ListadoProducto Receiver;

        protected override void EjecutarInner()
        {
            Receiver = new Listado.ListadoProducto
                {
                    Text = "Gestión de Productos",
                    BotonSeleccionar = false,
                    BotonCancelar = false
                };
            Receiver.Ver();
        }
    }

    #endregion

    #region Marcas
    public class ComandoAltaMarca : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoMarcas().Alta();
        }
    }

    public class ComandoModificarMarca : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoMarcas().Modificar();
        }
    }


    public class ComandoBajaMarca : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoMarcas().Baja();
        }
    }

    public class ComandoVerMarca : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoMarcas().Ver();
        }
    }

    #endregion

    #region CategoriasProductos
    public class ComandoAltaCategoriasProducto : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoCategoriasProducto().Alta();
        }
    }

    public class ComandoModificarCategoriasProducto : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoCategoriasProducto().Modificar();
        }
    }


    public class ComandoBajaCategoriasProducto : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoCategoriasProducto().Baja();
        }
    }

    public class ComandoVerCategoriasProducto : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new Listado.ListadoCategoriasProducto().Ver();
        }
    }

    public class ComandoVerBackup : SolInfComando
    {
        protected override void EjecutarInner()
        {
            new BackupForm().ver();
        }
    }

    #endregion
}